This invention relates to the field of computer systems. More particularly, a system and methods are provided for facilitating a consistent point-in-time copy of one or more electronic files.
The advent of point-in-time copy functions has given file servers, data servers and other entities that manage stored data the ability to take snapshot copies of their data as of a specified time. During a point-in-time copy, a dataset is momentarily frozen (i.e., to prevent updates) and the locations of data in the dataset are rapidly captured. After the point-in-time copy is made, the dataset is thawed and made live again, while the point-in-time copy can be used as desired (e.g., to make a backup of the dataset).
More particularly, during a point-in-time copy operation for one or more files on a disk drive or disk drive array, a snapshot is taken of the metadata or index information identifying all disk blocks in the dataset. After the snapshot is taken, regular activity using the dataset can resume. To preserve the dataset as of the time of the point-in-time copy, when a disk block in the dataset is to be updated after the point-in-time copy, its contents are copied to a new block, and the new block replaces the old block in the live version of the dataset. Thus, disk blocks in the dataset as of the time of the point-in-time copy are preserved.
However, in today's computing environments, existing communication protocols do not allow for coordination of a point-in-time copy between the storage node or entity performing the copy (e.g., a disk array, a server) and the computer(s) or other devices currently accessing the dataset (e.g., client computers, other servers). Thus, it is highly probable that the point-in-time copy will be inconsistent—that it will not capture the true state of the dataset because one or more of the other devices will have data that should be included in the copy.
Thus, what is needed is a system and method for facilitating a consistent point-in-time copy of a specified dataset, so that the point-in-time copy will accurately reflect the state of the dataset at the time of the copy.